(defmacro while (test &body body )
  `(do
    ()
    ((not ,test))
     ,@body))
(defun pow(x y)
  (do ((di x (* di x))
       (zi y (- y 1)))
       ((= zi 1) di)))

;;break down even for odd number multi 2^x 
(defun Fen_2(x)
  (let ((a 0))
    (while (not (oddp x))
      (setf x (/ x 2))
      (setf a (+ a 1)))
    (format t "~5d * 2^~d" x a)))
